import * as tip from './tip'
import { systemApi } from '@/api'

export const downLoadImg = (url:string) => {
	return new Promise((resolve,reject) => {
		tip.showLoading('加载中...')
		uni.downloadFile({
			url: url,
			success: (res:any) => {
				if (res.statusCode === 200) {
					 uni.saveImageToPhotosAlbum({
						 filePath: res.tempFilePath,
						 success:(res1:any) => {
							 resolve(res1)
						 },
						 fail:(err) => {
							 tip.confirm('需要您授权保存相册').then(() => {
								uni.openSetting({
									 success:(res2:any) => {
										 if(res2.authSetting['scope.writePhotosAlbum']) {
											 tip.showToast('获取权限成功，再次保存图片即可成功')
										 } else {
											 tip.showToast('获取权限失败，无法保存到相册')
										 }
									 }
								}) 
							 })
							 reject(err)
						 },
						 complete:() => {
							 tip.hideLoading()
						 }
					 })
				} else {
					tip.hideLoading()
				}
			},
			fail:(err:any) => {
				tip.hideLoading()
				tip.showToast(err)
			},
			complete:() => {
				
			}
		})
	})
	
}

export const setTabBarBadge = (data:any) => {
	if(data.text === '0') {
		uni.removeTabBarBadge({
			index: data.index
		})
	} else {
		uni.setTabBarBadge({
		  index: data.index,
		  text: data.text
		})
	}
	
}

//打开定位
export const openLocation = (data:any) => {
	uni.openLocation({
		name:data.name,
		address:data.address,
		latitude: data.latitude,
		longitude: data.longitude,
		success:() => {
			
		}
	})
}


//更新版本
//#ifdef MP-WEIXIN
export const updateWEIXINManager  = () => {
	const updateManager = uni.getUpdateManager()
	updateManager.onCheckForUpdate(function (res) {
	  // 请求完新版本信息的回调
	  //console.log(res.hasUpdate);
	})
	
	updateManager.onUpdateReady(function (res) {
	  uni.showModal({
	    title: '更新提示',
	    content: '新版本已经准备好，是否重启应用？',
	    success(res) {
	      if (res.confirm) {
	        // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
	        updateManager.applyUpdate();
	      }
	    }
	  });
	})
	
	updateManager.onUpdateFailed(function (res) {
	  // 新的版本下载失败
	  tip.showToast('新版本下载失败，请重新打开')
	});
}
//#endif
//#ifdef APP-PLUS
export const updateAPPManage = () => {
	plus.runtime.getProperty(plus.runtime.appid as any, function(widgetInfo) {
		//热更新：type=0，强制更新：type=1
		//是否更新：update=0不更新，update=1更新
		// [{
		//  "update": "0",
		// 	"platform":"android",
		// 	"type":"0",
		// 	"version":"1.0.0",
		// 	"url":"https://ts.texchange.com.cn/public/app/wgt/__UNI__0D80875.wgt",
		// 	"filename":"中恒e纺",
		// }]
		const versionStr = parseInt((widgetInfo.version as any).split('.').join(''))
		systemApi.getConfigKey('app_version').then((res:any) => {
			const data = JSON.parse(res.msg) 
			let appCode = ''
			let type = ''
			let url = ''
			let update = '0'
			const platform = uni.getSystemInfoSync().platform
			for(let i in data) {
				if(data[i].platform == platform) {
					type = data[i].type
					appCode = data[i].version
					url = data[i].url
					update = data[i].update
				}
			}
			const appCodeStr = parseInt(appCode.split('.').join(''))
			if(update == '1' && appCodeStr > versionStr) {
				if(type === '0') {
					updateHot(url)
				} else if(type === '1') {
					updatePackage(url)
				}
			}
		})
	})
}	

export const updateHot = (url:string) => {
	uni.downloadFile({
		url,
		success:(res:any) => {
		// 下载更新文件成功后进行安装
		plus.runtime.install(
		res.tempFilePath, 
		{
		   force: false // 是否强制安装, 如果将要安装应用的版本号不高于现有应用的版本号则终止安装，并返回安装失败。
		},
		function() {
		   tip.showToast('更新完毕，即将重启')
		   setTimeout(() => {
				plus.runtime.restart(); // 安装完成后重启应用
		   },2000)
		  })
		}
	})
}

export const updatePackage = (url:string) => {
	// ios平台不允许这样更新，所以我们需要跳转到appstore进行更新
	if (uni.getSystemInfoSync().platform === 'ios') {
		// plus.runtime.launchApplication({
		// 	action: 'itms-apps://xxx' // 链接可以通过接口获取
		// });
	} else {		   
		// 构建了下载任务，但此时并未开始下载
		const dtask = plus.downloader.createDownload(url, {},
			(res:any, status) => {
				tip.showToast('下载完成')
				if (status === 200) {
					plus.runtime.install(
					res.filename, 
					{
						force: false
					},
					function() {
					   console.log('安装成功')
					   plus.runtime.restart(); // 安装成功后重启
					},
					function(e:any) {
						console.log(e)
						tip.showToast('安装失败-01')
					});
				}
			}
		);
		// 执行安装包下载
		//dtask.start();
		
		try {
			dtask.start(); // 开启下载的任务
			var prg = 0;
			var showLoading = plus.nativeUI.showWaiting("正在下载"); //创建一个showWaiting对象
	
			dtask.addEventListener('statechanged', function(task, status) {
				// console.log('自动更新测试：',task)
				// console.log('自动更新测试：',status)
				// 给下载任务设置一个监听 并根据状态  做操作
				switch (task.state) {
					case 1:
						showLoading.setTitle("正在下载");
						break;
					case 2:
						showLoading.setTitle("已连接到服务器");
						break;
					case 3:
						prg = parseFloat((Number(task.downloadedSize) / Number(task.totalSize) * 100).toFixed(1))
						showLoading.setTitle("  正在下载" + prg + "%  ")
						break;
					case 4:
						plus.nativeUI.closeWaiting();
						//下载完成
						break;
				}
			});
		} catch (err) {
			console.log('错误信息',err)
			plus.nativeUI.closeWaiting();
		}
		
	}
}
//#endif
export const updateVersion = () => {
	//#ifdef MP-WEIXIN
	updateWEIXINManager()
	//#endif
	//#ifdef APP-PLUS
	updateAPPManage()
	//#endif
}

export const getNetworkType = () => {
	return new Promise((resolve, reject) => {
		uni.getNetworkType({
			success:(res:any) => {
				if(res.networkType === 'none') {
					tip.showToast('没有检测到网络，请查看网络是否正常！')
					uni.reLaunch({
						url:'/pages/status/notNetWork'
					})
				} else {
					resolve(true)
				}
			},
			fail:(err:any) => {
				reject(err)
			}
		})
	})
	
}

export const onNetworkStatusChange = () => {
	uni.onNetworkStatusChange((res:any) => {
		if(!res.isConnected) {
			tip.showToast('没有检测到网络，请查看网络是否正常！')
			uni.reLaunch({
				url:'/pages/status/notNetWork'
			})
		} else {
			uni.reLaunch({
				url:'/pages/index/index'
			})
		}
	})
}